package com.realife.eson.common.util.jwt.bak;//package com.bocloud.paas.eaas.common.handler;
//
//import com.bocloud.paas.eaas.common.enums.ResponseEnum;
//import com.bocloud.paas.eaas.common.exception.AxPaasMetaBusinessException;
//import io.jsonwebtoken.*;
//import org.springframework.util.StringUtils;
//
//import javax.crypto.spec.SecretKeySpec;
//import javax.xml.bind.DatatypeConverter;
//import java.security.Key;
//import java.util.Date;
//
//public class JwtUtils {
//
//    private static long tokenExpiration = 24*60*60*1000;
//    private static String tokenSignKey = "123dfgdfghdgfsd123165gsdfhgdshsdfgfsdgyhdfgdfhdfgafhfgad3464fhsdhdgsdfgfasdfgasdfgasdffasdfa64sdfsdfsghdsfhdggasf6384863456";
//
//    //避免使用公钥,私钥, 不然还要考虑存放秘钥文件
//    private static Key getKeyInstance(){
//        SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
//        byte[] bytes = DatatypeConverter.parseBase64Binary(tokenSignKey);
//        return new SecretKeySpec(bytes,signatureAlgorithm.getJcaName());
//    }
//
//    public static String createToken(Long userId, String userName) {
//        String token = Jwts.builder()
//                .setSubject("PAAS-USER")
//                .setExpiration(new Date(System.currentTimeMillis() + tokenExpiration))
//                .claim("userId", userId)
//                .claim("userName", userName)
//                .signWith(getKeyInstance(), SignatureAlgorithm.HS512)
//                .compressWith(CompressionCodecs.GZIP)
//                .compact();
//        return token;
//    }
//
//    /**
//     * 判断token是否有效
//     * @param token
//     * @return
//     */
//    public static boolean checkToken(String token) {
//        if(StringUtils.isEmpty(token)) {
//            return false;
//        }
//        try {
//            Jwts.parser().setSigningKey(getKeyInstance()).parseClaimsJws(token);
//            return true;
//        } catch (Exception e) {
//            return false;
//        }
//    }
//
//
//    public static Long getUserId(String token) {
//        Claims claims = getClaims(token);
//        Integer userId = (Integer)claims.get("userId");
//        return userId.longValue();
//    }
//
//    public static String getUserName(String token) {
//        Claims claims = getClaims(token);
//        return (String)claims.get("userName");
//    }
//
//    public static void removeToken(String token) {
//        //jwttoken无需删除，客户端扔掉即可。
//    }
//
//    /**
//     * 校验token并返回Claims
//     * @param token
//     * @return
//     */
//    private static Claims getClaims(String token) {
//        if(StringUtils.isEmpty(token)) {
//            // LOGIN_AUTH_ERROR(18002, "未登录"),
//            throw new AxPaasMetaBusinessException(ResponseEnum.LOGIN_AUTH_ERROR);
//        }
//        try {
//            Jws<Claims> claimsJws = Jwts.parser().setSigningKey(getKeyInstance()).parseClaimsJws(token);
//            Claims claims = claimsJws.getBody();
//            return claims;
//        } catch (Exception e) {
//            throw new AxPaasMetaBusinessException(ResponseEnum.LOGIN_AUTH_ERROR);
//        }
//    }
//
//
//    public static void main(String[] args) {
//        String token = createToken(1L, "systemadmin");
//        System.out.println(token);
//
//        System.out.println("getClaims(token) = " + getClaims(token));
//        System.out.println("checkToken(token) = " + checkToken(token));
//        System.out.println("getUserId(token) = " + getUserId(token));
//        System.out.println("getUserName(token) = " + getUserName(token));
//
//    }
//}
//
